import UIKit

//  Copyright © 2017-2019 Apple Inc. All rights reserved.
@available(iOS 13.0, *)
extension QKC where AA :UICollectionViewCompositionalLayoutConfiguration {
		// default is UICollectionViewScrollDirectionVertical
    open func scrollDirection_qk_s(_ scrollDirection:  UICollectionView.ScrollDirection ) -> QKC<AA,YY,ZZ, UICollectionView.ScrollDirection >{
		return link(next: scrollDirection).then_QK { $0.value.scrollDirection = scrollDirection }
	}
    open func scrollDirection_qk_g() -> QKC<AA,YY,ZZ, UICollectionView.ScrollDirection >{
		 self +^ self.value.scrollDirection
	}

		// default is 0
    open func interSectionSpacing_qk_s(_ interSectionSpacing:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: interSectionSpacing).then_QK { $0.value.interSectionSpacing = interSectionSpacing }
	}
    open func interSectionSpacing_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.interSectionSpacing
	}

    open func boundarySupplementaryItems_qk_s(_ boundarySupplementaryItems:  [NSCollectionLayoutBoundarySupplementaryItem]) -> QKC<AA,YY,ZZ, [NSCollectionLayoutBoundarySupplementaryItem]>{
		return link(next: boundarySupplementaryItems).then_QK { $0.value.boundarySupplementaryItems = boundarySupplementaryItems }
	}
    open func boundarySupplementaryItems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutBoundarySupplementaryItem]>{
		 self +^ self.value.boundarySupplementaryItems
	}

}

@available(iOS 13.0, *)
extension QKC where AA :UICollectionViewCompositionalLayout {
	//    Note: any changes made to properites directly will have no effect.
     open func configuration_qk_s(_ configuration:  UICollectionViewCompositionalLayoutConfiguration) -> QKC<AA,YY,ZZ, UICollectionViewCompositionalLayoutConfiguration>{
		return link(next: configuration).then_QK { $0.value.configuration = configuration }
	}
     open func configuration_qk_g() -> QKC<AA,YY,ZZ, UICollectionViewCompositionalLayoutConfiguration>{
		 self +^ self.value.configuration
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutSection {
    open func contentInsets_qk_s(_ contentInsets:  NSDirectionalEdgeInsets) -> QKC<AA,YY,ZZ, NSDirectionalEdgeInsets>{
		return link(next: contentInsets).then_QK { $0.value.contentInsets = contentInsets }
	}
    open func contentInsets_qk_g() -> QKC<AA,YY,ZZ, NSDirectionalEdgeInsets>{
		 self +^ self.value.contentInsets
	}

    open func interGroupSpacing_qk_s(_ interGroupSpacing:  CGFloat) -> QKC<AA,YY,ZZ, CGFloat>{
		return link(next: interGroupSpacing).then_QK { $0.value.interGroupSpacing = interGroupSpacing }
	}
    open func interGroupSpacing_qk_g() -> QKC<AA,YY,ZZ, CGFloat>{
		 self +^ self.value.interGroupSpacing
	}

	// default is .none
    open func orthogonalScrollingBehavior_qk_s(_ orthogonalScrollingBehavior:  UICollectionLayoutSectionOrthogonalScrollingBehavior) -> QKC<AA,YY,ZZ, UICollectionLayoutSectionOrthogonalScrollingBehavior>{
		return link(next: orthogonalScrollingBehavior).then_QK { $0.value.orthogonalScrollingBehavior = orthogonalScrollingBehavior }
	}
    open func orthogonalScrollingBehavior_qk_g() -> QKC<AA,YY,ZZ, UICollectionLayoutSectionOrthogonalScrollingBehavior>{
		 self +^ self.value.orthogonalScrollingBehavior
	}

    open func boundarySupplementaryItems_qk_s(_ boundarySupplementaryItems:  [NSCollectionLayoutBoundarySupplementaryItem]) -> QKC<AA,YY,ZZ, [NSCollectionLayoutBoundarySupplementaryItem]>{
		return link(next: boundarySupplementaryItems).then_QK { $0.value.boundarySupplementaryItems = boundarySupplementaryItems }
	}
    open func boundarySupplementaryItems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutBoundarySupplementaryItem]>{
		 self +^ self.value.boundarySupplementaryItems
	}

	// by default, section supplementaries will follow any section-specific contentInsets
    open func supplementariesFollowContentInsets_qk_s(_ supplementariesFollowContentInsets:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: supplementariesFollowContentInsets).then_QK { $0.value.supplementariesFollowContentInsets = supplementariesFollowContentInsets }
	}
    open func supplementariesFollowContentInsets_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.supplementariesFollowContentInsets
	}

	// Called for each layout pass to allow modification of item properties right before they are displayed.
    open func visibleItemsInvalidationHandler_qk_s(_ visibleItemsInvalidationHandler:  NSCollectionLayoutSectionVisibleItemsInvalidationHandler?) -> QKC<AA,YY,ZZ, NSCollectionLayoutSectionVisibleItemsInvalidationHandler?>{
		return link(next: visibleItemsInvalidationHandler).then_QK { $0.value.visibleItemsInvalidationHandler = visibleItemsInvalidationHandler }
	}
    open func visibleItemsInvalidationHandler_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSectionVisibleItemsInvalidationHandler?>{
		 self +^ self.value.visibleItemsInvalidationHandler
	}

	// decoration views anchored to the section's geometry (e.g. background decoration view)
    open func decorationItems_qk_s(_ decorationItems:  [NSCollectionLayoutDecorationItem]) -> QKC<AA,YY,ZZ, [NSCollectionLayoutDecorationItem]>{
		return link(next: decorationItems).then_QK { $0.value.decorationItems = decorationItems }
	}
    open func decorationItems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutDecorationItem]>{
		 self +^ self.value.decorationItems
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutItem {
    open func contentInsets_qk_s(_ contentInsets:  NSDirectionalEdgeInsets) -> QKC<AA,YY,ZZ, NSDirectionalEdgeInsets>{
		return link(next: contentInsets).then_QK { $0.value.contentInsets = contentInsets }
	}
    open func contentInsets_qk_g() -> QKC<AA,YY,ZZ, NSDirectionalEdgeInsets>{
		 self +^ self.value.contentInsets
	}

	//    evenly align items among available layout space.
     open func edgeSpacing_qk_s(_ edgeSpacing:  NSCollectionLayoutEdgeSpacing?) -> QKC<AA,YY,ZZ, NSCollectionLayoutEdgeSpacing?>{
		return link(next: edgeSpacing).then_QK { $0.value.edgeSpacing = edgeSpacing }
	}
     open func edgeSpacing_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutEdgeSpacing?>{
		 self +^ self.value.edgeSpacing
	}

    open func layoutSize_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSize >{
		 self +^ self.value.layoutSize
	}

    open func supplementaryItems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutSupplementaryItem] >{
		 self +^ self.value.supplementaryItems
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutGroupCustomItem {
    open func frame_qk_g() -> QKC<AA,YY,ZZ, CGRect >{
		 self +^ self.value.frame
	}

    open func zIndex_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.zIndex
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutGroup {
    open func supplementaryItems_qk_s(_ supplementaryItems:  [NSCollectionLayoutSupplementaryItem]) -> QKC<AA,YY,ZZ, [NSCollectionLayoutSupplementaryItem]>{
		return link(next: supplementaryItems).then_QK { $0.value.supplementaryItems = supplementaryItems }
	}
    open func supplementaryItems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutSupplementaryItem]>{
		 self +^ self.value.supplementaryItems
	}

	// Supplies additional spacing between items along the layout axis of the group
     open func interItemSpacing_qk_s(_ interItemSpacing:  NSCollectionLayoutSpacing?) -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing?>{
		return link(next: interItemSpacing).then_QK { $0.value.interItemSpacing = interItemSpacing }
	}
     open func interItemSpacing_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing?>{
		 self +^ self.value.interItemSpacing
	}

    open func subitems_qk_g() -> QKC<AA,YY,ZZ, [NSCollectionLayoutItem] >{
		 self +^ self.value.subitems
	}

	// for visual debugging; will print an ASCII art rendering to console
    open func visualDescription_qk_f() -> QKC<AA,YY,ZZ,String>{
		 self +^ self.value.visualDescription()
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutDimension {
    open func isFractionalWidth_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFractionalWidth
	}

    open func isFractionalHeight_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFractionalHeight
	}

    open func isAbsolute_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isAbsolute
	}

    open func isEstimated_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isEstimated
	}

    open func dimension_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.dimension
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutSize {
    open func widthDimension_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutDimension >{
		 self +^ self.value.widthDimension
	}

    open func heightDimension_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutDimension >{
		 self +^ self.value.heightDimension
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutSpacing {
    open func spacing_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.spacing
	}

    open func isFlexible_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFlexible
	}

    open func isFixed_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFixed
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutEdgeSpacing {
    open func leading_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing? >{
		 self +^ self.value.leading
	}

    open func top_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing? >{
		 self +^ self.value.top
	}

    open func trailing_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing? >{
		 self +^ self.value.trailing
	}

    open func bottom_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutSpacing? >{
		 self +^ self.value.bottom
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutSupplementaryItem {
    open func zIndex_qk_s(_ zIndex:  Int) -> QKC<AA,YY,ZZ, Int>{
		return link(next: zIndex).then_QK { $0.value.zIndex = zIndex }
	}
    open func zIndex_qk_g() -> QKC<AA,YY,ZZ, Int>{
		 self +^ self.value.zIndex
	}

    open func elementKind_qk_g() -> QKC<AA,YY,ZZ, String >{
		 self +^ self.value.elementKind
	}

    open func containerAnchor_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutAnchor >{
		 self +^ self.value.containerAnchor
	}

    open func itemAnchor_qk_g() -> QKC<AA,YY,ZZ, NSCollectionLayoutAnchor? >{
		 self +^ self.value.itemAnchor
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutBoundarySupplementaryItem {
	//   For .estimated sized supplementary items, this allows automatic adjustment of the layout. (e.g. dynamic text)
    open func extendsBoundary_qk_s(_ extendsBoundary:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: extendsBoundary).then_QK { $0.value.extendsBoundary = extendsBoundary }
	}
    open func extendsBoundary_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.extendsBoundary
	}

	//   Occlusion disambiguation between other supplementaries will be managed automatically (e.g. section header + footer both pinned)
    open func pinToVisibleBounds_qk_s(_ pinToVisibleBounds:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: pinToVisibleBounds).then_QK { $0.value.pinToVisibleBounds = pinToVisibleBounds }
	}
    open func pinToVisibleBounds_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.pinToVisibleBounds
	}

    open func alignment_qk_g() -> QKC<AA,YY,ZZ, NSRectAlignment >{
		 self +^ self.value.alignment
	}

    open func offset_qk_g() -> QKC<AA,YY,ZZ, CGPoint >{
		 self +^ self.value.offset
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutDecorationItem {
    open func zIndex_qk_s(_ zIndex:  Int ) -> QKC<AA,YY,ZZ, Int >{
		return link(next: zIndex).then_QK { $0.value.zIndex = zIndex }
	}
    open func zIndex_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.zIndex
	}

    open func elementKind_qk_g() -> QKC<AA,YY,ZZ, String >{
		 self +^ self.value.elementKind
	}

}

@available(iOS 13.0, *)
extension QKC where AA :NSCollectionLayoutAnchor {
    open func edges_qk_g() -> QKC<AA,YY,ZZ, NSDirectionalRectEdge >{
		 self +^ self.value.edges
	}

    open func offset_qk_g() -> QKC<AA,YY,ZZ, CGPoint >{
		 self +^ self.value.offset
	}

    open func isAbsoluteOffset_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isAbsoluteOffset
	}

    open func isFractionalOffset_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isFractionalOffset
	}

}

